草庐IT

c++ - Lua C++ 表迭代

全部标签

c# - 动态 JContainer (JSON.NET) & 在运行时迭代属性

我在MVC4/.NET4WebApiController操作中收到一个JSON字符串。该操作的参数是dynamic,因为我在接收端对接收到的JSON对象一无所知。publicdynamicPost(dynamicmyobject)JSON被自动解析,生成的dynamic对象是Newtonsoft.Json.Linq.JContainer。正如预期的那样,我可以在运行时评估属性,因此如果JSON包含类似myobject.myproperty的内容,那么我现在可以获取接收到的动态对象并在C#代码中调用myobject.myproperty。到目前为止一切顺利。现在我想遍历作为JSON一部分

c# - 在 .NET 中,使用 "foreach"迭代 IEnumerable<ValueType> 的实例会创建副本吗?那么我应该更喜欢使用 "for"而不是 "foreach"吗?

在.NET中,使用“foreach”迭代IEnumerable的实例会创建副本吗?那么我应该更喜欢使用“for”而不是“foreach”吗?我写了一些代码来证明这一点:structValueTypeWithOneField{privateInt64field1;}structValueTypeWithFiveField{privateInt64field1;privateInt64field2;privateInt64field3;privateInt64field4;privateInt64field5;}publicclassProgram{staticvoidMain(strin

c# - 是否有一个 IEnumerable 实现只迭代一次它的源代码(例如 LINQ)?

提供的items是LINQ表达式的结果:varitems=fromiteminItemsSource.RetrieveItems()where...假设每个项目的生成需要一些不可忽略的时间。两种操作模式是可能的:使用foreach将允许开始处理集合开头的项目,这比最后可用的项目快得多。然而,如果我们想稍后再次处理同一个集合,我们将不得不复制保存它:varstoredItems=newList();foreach(variteminitems){Process(item);storedItems.Add(item);}//Laterforeach(variteminstoredItems

c# - 在 lambda 表达式中使用 foreach 循环的迭代器变量 - 为什么会失败?

考虑以下代码:publicclassMyClass{publicdelegatestringPrintHelloType(stringgreeting);publicvoidExecute(){Type[]types=newType[]{typeof(string),typeof(float),typeof(int)};ListhelloMethods=newList();foreach(vartypeintypes){varsayHello=newPrintHelloType(greeting=>SayGreetingToType(type,greeting));helloMetho

c# - for循环中的条件是否在每次迭代中都被评估?

当你做这样的事情时:for(inti=0;i每次迭代都会调用collection.Count吗?如果Count属性动态获取调用计数,结果会改变吗? 最佳答案 YesCount将在每次通过时进行评估。原因是在循环执行期间可能会修改集合。鉴于循环结构,变量i应该代表迭代期间集合中的有效索引。如果没有在每个循环上都进行检查,那么这不能证明是正确的。示例案例for(inti=0;i此规则的一个异常(exception)是在约束为长度的数组上循环。for(inti=0;i在某些情况下,CLRJIT将对这种类型的循环进行特殊处理,因为数组的长度

c# - 异步迭代器任务<IEnumerable<T>>

我正在尝试实现一个返回迭代器的异步函数。思路如下:privateasyncTask>TestAsync(stringtestString){foreach(charcintestString.ToCharArray()){//dootherworkyieldreturnc;}}但是,有一个错误信息说这个函数不能是一个迭代器block,因为Task>不是迭代器接口(interface)类型。有解决办法吗? 最佳答案 Amore"batteries-included"implementation从C#8.0开始,包括语言支持在内的此类功

c# - 仅当在循环的所有迭代中都满足条件时才执行操作

有没有办法只在for循环的所有迭代中满足条件时才触发操作?例子:if((i%1==0)&&(i%2==0)&&(...)&&(i%20==0)){Doactionx}这是我尝试过的方法,但没有按预期工作:for(intb=1;b 最佳答案 您还可以使用像这样的简单LINQ查询:if(Enumerable.Range(1,20).All(b=>i%b==0))DoAction(); 关于c#-仅当在循环的所有迭代中都满足条件时才执行操作,我们在StackOverflow上找到一个类似的问题

c# - 如何访问 JArray 的元素(或迭代它们)

我从Twitter获得了以下Json+token{[{"trends":[{"name":"CrokeParkII","url":"http://twitter.com/search?q=%22Croke+Park+II%22","promoted_content":null,"query":"%22Croke+Park+II%22","events":null},{"name":"#twiznight","url":"http://twitter.com/search?q=%23twiznight","promoted_content":null,"query":"%23twizni

c# - 迭代文件夹和子文件夹的最佳方式

从指定位置开始迭代文件夹和子文件夹以获取每个文件夹中的文件大小、文件总数和文件夹总大小的最佳方法是什么? 最佳答案 如果您使用的是.NET4,您可能希望使用System.IO.DirectoryInfo.EnumerateDirectories和System.IO.DirectoryInfo.EnumerateFiles方法。如果您像其他帖子推荐的那样使用Directory.GetFiles方法,则该方法调用将不会返回,直到它检索到所有条目。如果您使用递归,这可能需要很长时间。来自documentation:TheEnumerate

c# - 为什么迭代器方法不能采用 'ref' 或 'out' 参数?

我今天早些时候试过这个:publicinterfaceIFoo{IEnumerableGetItems_A(refintsomethingElse);IEnumerableGetItems_B(refintsomethingElse);}publicclassBar:IFoo{publicIEnumerableGetItems_A(refintsomethingElse){//Ok...}publicIEnumerableGetItems_B(refintsomethingElse){yieldreturn7;//CS1623:Iteratorscannothavereforoutpa